package cn.com.idmy.base.annotation;

import java.lang.annotation.*;


/**
 * 表示一个主键的注解。
 * 该注解可以用于字段上，以指定该字段作为主键的相关信息。
 */
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Id {
    /**
     * 主键类型，默认为 DEFAULT。
     *
     * @return 主键类型
     */
    IdType type() default IdType.DEFAULT;

    String key() default "";

    /**
     * ID 的值，通常表示主键的具体值。
     * 如果主键类型为 SEQUENCE，通常表示序列的名称。
     *
     * @return ID 的值
     */
    String value() default "";

    /**
     * 字段的标题，通常用于描述字段的用途。
     *
     * @return 字段的标题
     */
    String title() default "";

    /**
     * 字段的名称。
     *
     * @return 字段的名称
     */
    String name() default "";

    /**
     * 是否在插入之前生成主键，默认为 true。
     *
     * @return 是否在插入之前生成主键
     */
    boolean before() default true;
}